Skip to main content

Cinematica personalizzata

Vedi il PLCopenSingle2.project progetto di esempio e il CustomKinematics.library libreria nella directory di installazione di CODESYS sotto ..\CODESYS SoftMotion\Examples.

Questo esempio descrive come creare una libreria con una trasformazione cinematica personalizzata (Gantry3C) e come utilizzare questa libreria in un progetto per controllare il robot.

La trasformazione cinematica 'Gantry3C' consiste di 3 assi lineari (X, Y e Z) che portano una testa utensile. La testa dell'utensile è costituita da un asse supplementare che porta un utensile montato. La testa dell'utensile può essere ruotata attorno all'asse Z.

_sm_img_custom_kinematik.png

1. Crea un nuovo progetto di libreria

Crea un nuovo progetto con il Libreria vuota modello.

_sm_img_create_empty_project.png

2. Aggiungi un gestore di libreria.

Aggiungi un Gestore della Libreria al file POU visualizzazione. Aggiungi il SM3_Transformation, SM3_Math, E SM3_Error biblioteche al Gestore della Biblioteca.

3. Creazione del blocco funzione Gantry3C

Questo blocco funzione implementa le interfacce MC_KIN_REF_SM3 e ISMKinematicsWithInfo2 dalla biblioteca SM3_Transformation. È possibile definire un offset come input per ciascun asse. Questo offset viene sottratto prima della trasformazione diretta e aggiunto dopo la trasformazione inversa.

_sm_img_fb_gantry3c.png

Esempio di Gantry3C con due cinematiche disaccoppiate e KinCoupled:

FUNCTION_BLOCK Custom_Kin_Gantry3 IMPLEMENTS ISMPositionKinematics
FUNCTION_BLOCK Custom_Kin_CAxis IMPLEMENTS ISMOrientationKinematics

FUNCTION_BLOCK Custom_Kin_Gantry3C EXTENDS Kin_Coupled

Fornire i blocchi funzione Custom_Kin_Gantry3 e Custom_Kin_CAxis come ingressi per il blocco funzione Kin_Coupled durante l'inizializzazione. Ora Custom_Kin_Gantry3C diventa una cinematica accoppiata che combina la cinematica di posizione e di orientamento.

4. Implementazione dei metodi dell'interfaccia MC_KIN_REF_SM3 e della proprietà NumAxes4

AxesToCartesian: Cinematica in avanti: Calcolo della posizione e dell'orientamento dai valori degli assi.

CartesianToAxes: Cinematica inversa: Calcolo dei valori degli assi dalla posizione e dall'orientamento.

NumAxes: Numero di assi della cinematica

_sm_img_cartesian_to_axes.png
_sm_img_axes_to_cartesian.png
_sm_img_gantry3c_methods.png

5. Implementazione dei metodi delle interfacce ISMKinematicsWithInfo2 e ISMKinematicsWithInfo

GetAxisProperties: Proprietà, come il tipo di asse. I limiti per ogni asse possono essere definiti.

GetKinematicsName: Nome della cinematica

IsSingularity: Può essere ignorato per questa cinematica

_sm_img_get_axis_properties.png
_sm_img_get_kinematics_name.png

6. Specificare le informazioni sul progetto.

_sm_img_project_information.png

7. Controllare la libreria per errori del compilatore.

Per controllare la libreria, fare clic su CostruireControlla tutti gli oggetti del pool.

8. Creare la descrizione nel configuratore del gruppo di assi.

Quando il POU ha l'attributo sm_kin_libdoc, il commento specificato nel blocco funzione viene utilizzato nel configuratore del gruppo di assi come descrizione della cinematica. A tale scopo viene utilizzata la formattazione del testo ristrutturata.

_sm_img_restructured_text.png
_sm_img_axis_group_description.png
_sm_img_axis_group_configurator.png
Procedura. Per generare la descrizione della cinematica dai commenti dei blocchi funzione nell'editor dei gruppi di assi, procedere nel modo seguente:
  1. Includi l'attributo sm_kin_libdoc come mostrato nell'immagine sopra.

  2. Includi le proprietà del progetto richieste DocFormat e DocLanguages (nella finestra di dialogo delle informazioni sul progetto) relativo alla documentazione della libreria.

    Risultato:

    _sm_img_project_information_libdoc.png
  3. Assicurati che la directory di installazione di CODESYS il file eseguibile libdoc.exe contiene (directory ...\DocScripting\3.5.xx.0\).

  4. Scarica il convertitore wkhtmltox a 32 bit con versione 0.12.5 o precedente da https://wkhtmltopdf.org/downloads.html giù. Decomprimi il file wkhtmltox.dll e incollali CODESYS- Directory di installazione in ...\DocScripting\3.5.xx.0\bin uno.

    Importante

    Da quando wkhtmltox.dll non supporta più le immagini per impostazione predefinita nella versione 0.12.6 e successive, devi utilizzare la versione 0.12.5 o precedente.

  5. Crea la variabile di sistema LIBDOC_CODESYS in Windows. Imposta il valore sul percorso del file di CODESYS.exe. Assicurati di specificare il nome del percorso e il nome del profilo tra virgolette doppie.

    Risultato:

    _sm_img_libdoc_path.png
  6. Salva, chiudi e riapri il progetto della libreria.

  7. Clic File → Salva progetto come libreria compilata.

    La libreria compilata verrà installata nel progetto che utilizza questa cinematica.

Utilizzo della libreria in un progetto (CustomKinematics_Implementation.project)

Il progetto dimostra come utilizzare e controllare la cinematica creata nella sezione precedente facendo jogging o comandando un movimento.

  1. Creare un CODESYS progetto standard con il CODESYS SoftMotion Win controllore.

  2. Apri il Gestore della libreria e installa la libreria CustomKinematics.compiled-library (creato nella sezione precedente) contenente la cinematica Gantry3C. Aggiungi la libreria al Gestore della libreria.

  3. Aggiungere un oggetto di gruppo asse e selezionare il KinCustom.Gantry3C cinematica.

    Risultato:

    _sm_img_select_kinematics.png
  4. Aggiungi 4 assi virtuali al Pool di assi generali SoftMotion pool di assi nell'albero dei dispositivi. (DriveX, Y, Z e C)

  5. Aprire il configuratore del gruppo di assi. Nel Mappatura sugli assi sezione, mappare gli assi nei rispettivi campi.

    Risultato:

    _sm_img_axis_mapping.png
  6. Il programma Prg_Visu è il programma principale che controlla il gruppo di assi. Quando l'applicazione viene avviata, Prg_Visu accende il gruppo di assi e lo abilita. Inoltre, richiama tutti i blocchi funzione necessari per controllare il gruppo di assi (jogging, movimenti lineari e PTP). Tutti questi movimenti possono essere controllati dalla visualizzazione allegata.

    Risultato:

    _sm_img_prg_visu.png
  7. Blocco funzione: Jog: Questo FB combina il jogging nello spazio degli assi e nello spazio cartesiano. Utilizza due istanze di SMC_GroupJog2. Uno è per lo spazio degli assi e l'altro è per lo spazio cartesiano. Questo blocco funzione può essere utilizzato con i modelli di visualizzazione V_Posizione_Robot_assi E V_RobotPosition_carrello_Jog per spostare qualsiasi cinematica nello spazio cartesiano e negli assi.

    Risultato:

    _sm_img_fb_jog.png
    _sm_img_fb_jog2.png
  8. FB SMC_TRAFOF_Gantry3C: Questo blocco funzione trasforma i valori dell'asse di ingresso di una cinematica Gantry3C nei rispettivi valori TCP. Inoltre, i valori degli assi sono normalizzati in modo che possano essere utilizzati con il modello di visualizzazione TRAFOF_Gantry3C_YZ per visualizzare i movimenti della cinematica.

    Risultato:

    _sm_img_trafof_gantry3c.png
  9. Compila ed esegui l'applicazione. Apri la visualizzazione. Puoi muovere il robot nello spazio degli assi così come nello spazio cartesiano. Sono inoltre disponibili modelli di visualizzazione per comandare un movimento lineare o PTP.

    Risultato:

    _sm_img_custom_kinematics_visu.png

Suggerimento

L'esempio qui descritto discute gli assi di posizionamento e orientamento in un blocco funzione comune. Molte cinematiche possono comprendere due cinematiche parziali disaccoppiate: una cinematica di posizionamento (delta, gantry, ecc.) e una cinematica di orientamento (strumenti come asse C, polso2, polso3, ecc.). Entrambe le cinematiche sono collegate tra loro nel "punto di flangia", il TCP della cinematica di posizionamento. La cinematica di orientamento è caratterizzata dal fatto di poter calcolare il vettore dal punto di flangia al TCP della cinematica accoppiata. Il calcolo viene effettuato utilizzando solo l'orientamento di questo TCP (cioè indipendente dalla cinematica di posizionamento o indipendente dall'orientamento del punto di flangia). La cinematica di posizionamento a sua volta deve essere in grado di determinare le sue posizioni dell'asse solo dalla posizione del punto di flangia. Non deve dipendere dall'orientamento del punto della flangia.

In questo caso, puoi ricorrere a interfacce come ISMPositionKinematics O ISMOrientationKinematics. Per implementare queste interfacce, definire un blocco funzione da implementare ISMPositionKinematics e un altro blocco funzione da implementare ISMOrientationKinematics. Infine, definire un blocco funzione che estenda il blocco funzione Kin_Coupled (da SM3_Transformation) con i blocchi funzione precedentemente definiti come ingressi.

Per ulteriori informazioni, vedere: Creazione di una cinematica personalizzata